/*
 Copyright (c) 2013 Plausible Labs Cooperative, Inc. All rights reserved.
 Copyright (c) 2008-2011 Apple Inc. All rights reserved.
 
 This file contains Original Code and/or Modifications of Original Code
 as defined in and that are subject to the Apple Public Source License
 Version 2.0 (the 'License'). You may not use this file except in
 compliance with the License. Please obtain a copy of the License at
 http://www.opensource.apple.com/apsl/ and read it before using this
 file.
 
 The Original Code and all software distributed under the License are
 distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 Please see the License for the specific language governing rights and
 limitations under the License.
 */

#ifdef __i386__

# TEST-OPTIONS:  unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions

.data
.globl _unwind_tester_list_x86_disable_compact_frame
_unwind_tester_list_x86_disable_compact_frame:
.long	_unwind_test_x86_disable_compact_frame_no_reg
.long	_unwind_test_x86_disable_compact_frame_ebx
.long	_unwind_test_x86_disable_compact_frame_esi
.long	_unwind_test_x86_disable_compact_frame_edi
.long	_unwind_test_x86_disable_compact_frame_ebx_esi
.long	_unwind_test_x86_disable_compact_frame_esi_edi
.long	_unwind_test_x86_disable_compact_frame_ebx_edi
.long	_unwind_test_x86_disable_compact_frame_ebx_esi_edi
.long	_unwind_test_x86_disable_compact_frame_edi_esi_ebx
.long	_unwind_test_x86_disable_compact_frame_pad_ebx_edi
.long	0


.text

.globl _unwind_test_x86_disable_compact_frame_ebx
_unwind_test_x86_disable_compact_frame_ebx:
LFB13:
pushl	%ebp
LCFI2:
movl	%esp, %ebp
LCFI3:
pushl	%ebx
LCFI4:
subl	$20, %esp
LCFI5:
movl	$0, %ebx
call	_uwind_to_main
addl	$20, %esp
popl	%ebx
leave
ret
LFE13:

.globl _unwind_test_x86_disable_compact_frame_no_reg
_unwind_test_x86_disable_compact_frame_no_reg:
LFB12:
pushl	%ebp
LCFI6:
movl	%esp, %ebp
LCFI7:
subl	$24, %esp
LCFI8:
call	_uwind_to_main
leave
ret
LFE12:

.globl _unwind_test_x86_disable_compact_frame_esi
_unwind_test_x86_disable_compact_frame_esi:
LFB10:
pushl	%ebp
LCFI13:
movl	%esp, %ebp
LCFI14:
pushl	%esi
LCFI15:
subl	$20, %esp
LCFI16:
movl	$0, %esi
call	_uwind_to_main
addl	$20, %esp
popl	%esi
leave
ret
LFE10:

.globl _unwind_test_x86_disable_compact_frame_edi
_unwind_test_x86_disable_compact_frame_edi:
LFB11:
pushl	%ebp
LCFI9:
movl	%esp, %ebp
LCFI10:
pushl	%edi
LCFI11:
subl	$20, %esp
LCFI12:
movl	$0, %edi
call	_uwind_to_main
addl	$20, %esp
popl	%edi
leave
ret
LFE11:

.globl _unwind_test_x86_disable_compact_frame_ebx_esi
_unwind_test_x86_disable_compact_frame_ebx_esi:
LFB9:
pushl	%ebp
LCFI17:
movl	%esp, %ebp
LCFI18:
subl	$24, %esp
LCFI19:
movl	%ebx, -8(%ebp)
LCFI20:
movl	%esi, -4(%ebp)
LCFI21:
movl	$0, %ebx
movl	$0, %esi
call	_uwind_to_main
movl	-8(%ebp), %ebx
movl	-4(%ebp), %esi
leave
ret
LFE9:


.globl _unwind_test_x86_disable_compact_frame_esi_edi
_unwind_test_x86_disable_compact_frame_esi_edi:
LFB8:
pushl	%ebp
LCFI22:
movl	%esp, %ebp
LCFI23:
subl	$24, %esp
LCFI24:
movl	%esi, -8(%ebp)
LCFI25:
movl	%edi, -4(%ebp)
LCFI26:
movl	$0, %edi
movl	$0, %esi
call	_uwind_to_main
movl	-8(%ebp), %esi
movl	-4(%ebp), %edi
leave
ret
LFE8:

.globl _unwind_test_x86_disable_compact_frame_ebx_edi
_unwind_test_x86_disable_compact_frame_ebx_edi:
LFB91:
pushl	%ebp
LCFI171:
movl	%esp, %ebp
LCFI181:
subl	$24, %esp
LCFI191:
movl	%ebx, -8(%ebp)
LCFI201:
movl	%edi, -4(%ebp)
LCFI211:
movl	$0, %ebx
movl	$0, %edi
call	_uwind_to_main
movl	-8(%ebp), %ebx
movl	-4(%ebp), %edi
leave
ret
LFE91:

.globl _unwind_test_x86_disable_compact_frame_ebx_esi_edi
_unwind_test_x86_disable_compact_frame_ebx_esi_edi:
LFB7:
pushl	%ebp
LCFI27:
movl	%esp, %ebp
LCFI28:
subl	$40, %esp
LCFI29:
movl	%ebx, -12(%ebp)
LCFI30:
movl	%esi, -8(%ebp)
LCFI31:
movl	%edi, -4(%ebp)
LCFI32:
movl	$0, %ebx
movl	$0, %edi
movl	$0, %esi
call	_uwind_to_main
movl	-12(%ebp), %ebx
movl	-8(%ebp), %esi
movl	-4(%ebp), %edi
leave
ret
LFE7:


.globl _unwind_test_x86_disable_compact_frame_edi_esi_ebx
_unwind_test_x86_disable_compact_frame_edi_esi_ebx:
LFB7a:
pushl	%ebp
LCFI27a:
movl	%esp, %ebp
LCFI28a:
subl	$40, %esp
LCFI29a:
movl	%edi, -12(%ebp)
LCFI30a:
movl	%esi, -8(%ebp)
LCFI31a:
movl	%ebx, -4(%ebp)
LCFI32a:
movl	$0, %ebx
movl	$0, %esi
movl	$0, %edi
call	_uwind_to_main
movl	-12(%ebp), %edi
movl	-8(%ebp), %esi
movl	-4(%ebp), %ebx
leave
ret
LFE7a:



.globl _unwind_test_x86_disable_compact_frame_pad_ebx_edi
_unwind_test_x86_disable_compact_frame_pad_ebx_edi:
LFB91a:
pushl	%ebp
LCFI171a:
movl	%esp, %ebp
LCFI181a:
subl	$88, %esp
LCFI191a:
movl	%ebx, -72(%ebp)
LCFI201a:
movl	%edi, -68(%ebp)
LCFI211a:
movl	$0, %ebx
movl	$0, %edi
call	_uwind_to_main
movl	-72(%ebp), %ebx
movl	-68(%ebp), %edi
leave
ret
LFE91a:


.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame1:
.set L$set$0,LECIE1-LSCIE1
.long L$set$0	# Length of Common Information Entry
LSCIE1:
.long	0x0	# CIE Identifier Tag
.byte	0x1	# CIE Version
.ascii "zR\0"	# CIE Augmentation
.byte	0x1	# uleb128 0x1; CIE Code Alignment Factor
.byte	0x7c	# sleb128 -4; CIE Data Alignment Factor
.byte	0x8	# CIE RA Column
.byte	0x1	# uleb128 0x1; Augmentation size
.byte	0x10	# FDE Encoding (pcrel)
.byte	0xc	# DW_CFA_def_cfa
.byte	0x5	# uleb128 0x5
.byte	0x4	# uleb128 0x4
.byte	0x88	# DW_CFA_offset, column 0x8
.byte	0x1	# uleb128 0x1
.byte	0x88	# DW_CFA_offset, column 0x8  // duplicate save in CIE means disable compact unwind encoding
.byte	0x1	# uleb128 0x1
.align 2
LECIE1:


.globl _unwind_test_x86_disable_compact_frame_no_reg.eh
_unwind_test_x86_disable_compact_frame_no_reg.eh:
LSFDE5:
.set L$set$6,LEFDE5-LASFDE5
.long L$set$6	# FDE Length
LASFDE5:
.long	LASFDE5-EH_frame1	# FDE CIE offset
.long	LFB12-.	# FDE initial location
.set L$set$7,LFE12-LFB12
.long L$set$7	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$8,LCFI6-LFB12
.long L$set$8
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$9,LCFI7-LCFI6
.long L$set$9
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.align 2
LEFDE5:


.globl _unwind_test_x86_disable_compact_frame_ebx.eh
_unwind_test_x86_disable_compact_frame_ebx.eh:
LSFDE3:
.set L$set$1,LEFDE3-LASFDE3
.long L$set$1	# FDE Length
LASFDE3:
.long	LASFDE3-EH_frame1	# FDE CIE offset
.long	LFB13-.	# FDE initial location
.set L$set$2,LFE13-LFB13
.long L$set$2	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$3,LCFI2-LFB13
.long L$set$3
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$4,LCFI3-LCFI2
.long L$set$4
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$5,LCFI5-LCFI3
.long L$set$5
.byte	0x83	# DW_CFA_offset, column 0x3
.byte	0x3	# uleb128 0x3
.align 2
LEFDE3:


.globl _unwind_test_x86_disable_compact_frame_esi.eh
_unwind_test_x86_disable_compact_frame_esi.eh:
LSFDE9:
.set L$set$15,LEFDE9-LASFDE9
.long L$set$15	# FDE Length
LASFDE9:
.long	LASFDE9-EH_frame1	# FDE CIE offset
.long	LFB10-.	# FDE initial location
.set L$set$16,LFE10-LFB10
.long L$set$16	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$17,LCFI13-LFB10
.long L$set$17
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$18,LCFI14-LCFI13
.long L$set$18
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$19,LCFI16-LCFI14
.long L$set$19
.byte	0x86	# DW_CFA_offset, column 0x6
.byte	0x3	# uleb128 0x3
.align 2
LEFDE9:


.globl _unwind_test_x86_disable_compact_frame_edi.eh
_unwind_test_x86_disable_compact_frame_edi.eh:
LSFDE10:
.set L$set$15a,LEFDE10-LASFDE10
.long L$set$15a	# FDE Length
LASFDE10:
.long	LASFDE10-EH_frame1	# FDE CIE offset
.long	LFB11-.	# FDE initial location
.set L$set$16a,LFE11-LFB11
.long L$set$16a	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$17a,LCFI9-LFB11
.long L$set$17a
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$18a,LCFI10-LCFI9
.long L$set$18a
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$19a,LCFI12-LCFI10
.long L$set$19a
.byte	0x87	# DW_CFA_offset, column 0x7
.byte	0x3	# uleb128 0x3
.align 2
LEFDE10:

.globl _unwind_test_x86_disable_compact_frame_ebx_esi.eh
_unwind_test_x86_disable_compact_frame_ebx_esi.eh:
LSFDE11:
.set L$set$20,LEFDE11-LASFDE11
.long L$set$20	# FDE Length
LASFDE11:
.long	LASFDE11-EH_frame1	# FDE CIE offset
.long	LFB9-.	# FDE initial location
.set L$set$21,LFE9-LFB9
.long L$set$21	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$22,LCFI17-LFB9
.long L$set$22
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$23,LCFI18-LCFI17
.long L$set$23
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$24,LCFI21-LCFI18
.long L$set$24
.byte	0x86	# DW_CFA_offset, column 0x6
.byte	0x3	# uleb128 0x3
.byte	0x83	# DW_CFA_offset, column 0x3
.byte	0x4	# uleb128 0x4
.align 2
LEFDE11:

.globl _unwind_test_x86_disable_compact_frame_esi_edi.eh
_unwind_test_x86_disable_compact_frame_esi_edi.eh:
LSFDE13:
.set L$set$25,LEFDE13-LASFDE13
.long L$set$25	# FDE Length
LASFDE13:
.long	LASFDE13-EH_frame1	# FDE CIE offset
.long	LFB8-.	# FDE initial location
.set L$set$26,LFE8-LFB8
.long L$set$26	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$27,LCFI22-LFB8
.long L$set$27
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$28,LCFI23-LCFI22
.long L$set$28
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$29,LCFI26-LCFI23
.long L$set$29
.byte	0x87	# DW_CFA_offset, column 0x7
.byte	0x3	# uleb128 0x3
.byte	0x86	# DW_CFA_offset, column 0x6
.byte	0x4	# uleb128 0x4
.align 2
LEFDE13:

.globl _unwind_test_x86_disable_compact_frame_ebx_edi.eh
_unwind_test_x86_disable_compact_frame_ebx_edi.eh:
LSFDE111:
.set L$set$20a,LEFDE11-LASFDE11
.long L$set$20a	# FDE Length
LASFDE111:
.long	LASFDE111-EH_frame1	# FDE CIE offset
.long	LFB91-.	# FDE initial location
.set L$set$21a,LFE91-LFB91
.long L$set$21a	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$22a,LCFI171-LFB91
.long L$set$22a
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$23a,LCFI181-LCFI171
.long L$set$23a
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$24a,LCFI211-LCFI181
.long L$set$24a
.byte	0x87	# DW_CFA_offset, column 0x7
.byte	0x3	# uleb128 0x3
.byte	0x83	# DW_CFA_offset, column 0x3
.byte	0x4	# uleb128 0x4
.align 2
LEFDE111:

.globl _unwind_test_x86_disable_compact_frame_ebx_esi_edi.eh
_unwind_test_x86_disable_compact_frame_ebx_esi_edi.eh:
LSFDE15:
.set L$set$30,LEFDE15-LASFDE15
.long L$set$30	# FDE Length
LASFDE15:
.long	LASFDE15-EH_frame1	# FDE CIE offset
.long	LFB7-.	# FDE initial location
.set L$set$31,LFE7-LFB7
.long L$set$31	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$32,LCFI27-LFB7
.long L$set$32
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$33,LCFI28-LCFI27
.long L$set$33
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$34,LCFI32-LCFI28
.long L$set$34
.byte	0x87	# DW_CFA_offset, column 0x7
.byte	0x3	# uleb128 0x3
.byte	0x86	# DW_CFA_offset, column 0x6
.byte	0x4	# uleb128 0x4
.byte	0x83	# DW_CFA_offset, column 0x3
.byte	0x5	# uleb128 0x5
.align 2
LEFDE15:


.globl _unwind_test_x86_disable_compact_frame_edi_esi_ebx.eh
_unwind_test_x86_disable_compact_frame_edi_esi_ebx.eh:
LSFDE15a:
.set L$set$30a,LEFDE15a-LASFDE15a
.long L$set$30a	# FDE Length
LASFDE15a:
.long	LASFDE15a-EH_frame1	# FDE CIE offset
.long	LFB7a-.	# FDE initial location
.set L$set$31a,LFE7a-LFB7a
.long L$set$31a	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$32a,LCFI27a-LFB7a
.long L$set$32a
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$33a,LCFI28a-LCFI27a
.long L$set$33a
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$34a,LCFI32a-LCFI28a
.long L$set$34a
.byte	0x83	# DW_CFA_offset, column 0x3
.byte	0x3	# uleb128 0x3
.byte	0x86	# DW_CFA_offset, column 0x6
.byte	0x4	# uleb128 0x4
.byte	0x87	# DW_CFA_offset, column 0x7
.byte	0x5	# uleb128 0x5
.align 2
LEFDE15a:


.globl _unwind_test_x86_disable_compact_frame_pad_ebx_edi.eh
_unwind_test_x86_disable_compact_frame_pad_ebx_edi.eh:
LSFDE111a:
.set L$set$20b,LEFDE111a-LASFDE111a
.long L$set$20b	# FDE Length
LASFDE111a:
.long	LASFDE111a-EH_frame1	# FDE CIE offset
.long	LFB91a-.	# FDE initial location
.set L$set$21b,LFE91a-LFB91a
.long L$set$21b	# FDE address range
.byte	0x0	# uleb128 0x0; Augmentation size
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$22b,LCFI171a-LFB91a
.long L$set$22b
.byte	0xe	# DW_CFA_def_cfa_offset
.byte	0x8	# uleb128 0x8
.byte	0x84	# DW_CFA_offset, column 0x4
.byte	0x2	# uleb128 0x2
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$23b,LCFI181a-LCFI171a
.long L$set$23b
.byte	0xd	# DW_CFA_def_cfa_register
.byte	0x4	# uleb128 0x4
.byte	0x4	# DW_CFA_advance_loc4
.set L$set$24b,LCFI211a-LCFI181a
.long L$set$24b
.byte	0x87	# DW_CFA_offset, column 0x7
.byte	0x13	# uleb128 0x13
.byte	0x83	# DW_CFA_offset, column 0x3
.byte	0x14	# uleb128 0x14
.align 2
LEFDE111a:


.subsections_via_symbols

#endif /* __i386__ */
